package com.example.studygo.model;

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.*;

/**
 * @author 路老师
 * @date 2025/8/13
 * 无精神，不编程！无乐趣，不编程！
 * “调试：与bug共舞的艺术。”
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tbl_user")
public class User {

//    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
//    private Long userId;
//
//    @TableField(value = "user_name")
//    private String userName;
//    private String userPassword;
//    private String userEmail;
//    private Date userBirthday;
//    private String userHobbys;
//    private Integer userSex;
//    private String userAddress;
//    private String userStatus;
//    //向表中插入数据时自动填充该字段
//    @TableField(fill = FieldFill.INSERT)
//    private Date createTime;
//    //向表中插入数据时自动填充该字段
//    @TableField(fill = FieldFill.UPDATE)
//    private Date updateTime;
//    @TableLogic
//    private Integer isDeleted;

    //主键注解,用于表述主键
    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
    private Long userId;
    //用于描述普通列
    @TableField(value = "user_name")
    private String userName;
    private String userPassword;
    private String userEmail;
    private Date userBirthday;
    private String userHobbys;
    private Integer userSex;
    private String userAddress;
    private Integer userStatus;
    //向表中插入数据时自动填充该字段
    // 显式指定数据库列名为 create_time（与数据库一致）
    @TableField(fill = FieldFill.INSERT, value = "create_time")
    private Date createTime;
    //修改表中数据时自动填充该字段
    // 显式指定数据库列名为 update_time（与数据库一致）
    @TableField(fill = FieldFill.UPDATE, value = "update_time")
    private Date updateTime;
    /**
     * 局部配置，在那个实体对象中配置，那个实体对象对应表起作用
     * 逻辑删除配置，指定isDeleted对应的字段为逻辑删除字段
     * value = "0":未删除的值
     * delval = "1":已删除的值
     */
 @TableLogic(value = "0",delval = "1")
    private Integer isDeleted;


}
